package com.luojing.proxy.p1;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**JDK动态代理
 * @author luojing
 * @create 2018/08/31 上午9:17
 **/
public class ProxyHandler implements InvocationHandler {

  private Object tar;

  @Override
  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    Object result = null;
    //这里就可以进行所谓的AOP编程了
    //在调用具体函数方法前，执行功能处理
    result = method.invoke(tar,args);
    //在调用具体函数方法后，执行功能处理
    return result;
  }

  public Object bind(Object tar){
    this.tar = tar;
    return Proxy.newProxyInstance(tar.getClass().getClassLoader(),tar.getClass().getInterfaces(),this);
  }

}
